package com.shenzhenai.it_hei_ma_mythreadtest.test6case1;

import java.util.ArrayList;
import java.util.Collections;

/**
 * @author huangzehui
 * @date 2025/9/1 13:21 周一
 * @description
 */
public class MyThread extends Thread {

    ArrayList<Integer> list;

    // 线程1使用的变量
    static ArrayList<Integer> list1 = new ArrayList<>();
    // 线程2使用的变量
    static ArrayList<Integer> list2 = new ArrayList<>();

    public MyThread(ArrayList<Integer> list) {
        this.list = list;
    }

    @Override
    public void run() {
        // 1. 循环
        // 2. 同步代码块
        // 3. 判断
        // 4. 判断
        while (true) {
            synchronized (com.shenzhenai.it_hei_ma_mythreadtest.test5.MyThread.class) {
                if (list.isEmpty()) {
                    if ("抽奖箱1".equals(getName())) {
                        StringBuilder str = new StringBuilder();
                        int max = 0;
                        int sum = 0;
                        for (Integer i : list1) {
                            str.append(",").append(i);
                            if (max == 0) {
                                max = i;
                            } else {
                                max = Math.max(max, i);
                            }
                            sum += i;
                        }

                        if (!str.isEmpty()) {
                            str.deleteCharAt(0);
                        }


                        System.out.println(getName() + "总共产生了" + list1.size() + "个奖项。分别为：" + str + " 最高奖项为：" + max + " 总金额："+sum);

                    } else {
                        StringBuilder str = new StringBuilder();
                        int max = 0;
                        int sum = 0;
                        for (Integer i : list2) {
                            str.append(",").append(i);
                            if (max == 0) {
                                max = i;
                            } else {
                                max = Math.max(max, i);
                            }
                            sum += i;
                        }

                        if (!str.isEmpty()) {
                            str.deleteCharAt(0);
                        }


                        System.out.println(getName() + "总共产生了" + list1.size() + "个奖项。分别为：" + str + " 最高奖项为：" + max + " 总金额："+sum);
                    }
                    break;
                } else {
                    // 继续抽奖
                    // Random 或 Colections.shuffle 都可以达到随机
                    // Colections.shuffle 是通过打乱集合的方式
                    Collections.shuffle(list);
                    int price = list.remove(0);
//                    System.out.println(getName() + "又产生了一个 " + price + " 元大奖");
                    if ("抽奖箱1".equals(getName())) {
                        list1.add(price);
                    } else {
                        list2.add(price);
                    }
                }
            }

            try {
                // 这里睡一下，可以让多个线程抢占cpu的执行权更均匀
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
